package cn.edu.scau.cmi.luodongmei.hibernate.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {

    //声明一个静态变量，并在静态代码块中给该对象赋值
    private static SessionFactory sessionFactory;
    static{
        /*方式一
        Configuration cfg=new Configuration();
        cfg.configure("hibernate.cfg.xml"); //加载指定位置的配置
        sessionFactory=cfg.buildSessionFactory();*/
        
        /*方式二：当hibernate的主配置文件名称为hibernate.cfg.xml时，且该文件在类的根目录下时，当cfg.configure时可以省略参数
        Configuration cfg=new Configuration();
        cfg.configure(); //加载默认配置文件
        sessionFactory=cfg.buildSessionFactory();*/
        
        //方法三 ：由于cfg.configure()方法返回的依然是Configuration对象，所以该方法更进一步精简为
        sessionFactory=new Configuration()
            .configure("cn/edu/scau/cmi/luodongmei/hibernate/hibernate.cfg.xml")
            .buildSessionFactory();
    }
    
    /**
     * 获取SessionFactory工厂
     * @return
     */
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
    
    /**
     * 获取返回一个打开的Session
     * @return
     */
    public static Session getSession(){
        return sessionFactory.openSession();
    }
}